package com.example.demoprogram.controller;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

/**
 * 小狮子
 * 2024年11月20日11:23
 * Java中主任务分为多个子任务到不同的实例
 * 在Java中，如果你想将主任务分割成多个子任务并将其分配给不同的实例来处理，你可以使用ExecutorService来创建一个线程池，
 * 然后提交你的子任务。以下是一个简单的例子：
 */


public class TaskSplitter {
    public static void main(String[] args) throws Exception  {
        ExecutorService executor = Executors.newFixedThreadPool(4);

        class SubTask implements Runnable{
            private int taskId;
            // 假设这是你的子任务类
            public SubTask(int taskId){
                this.taskId = taskId;

            }

            @Override
            public void run() {
                // 执行任务逻辑
                System.out.println("Executing task:"+taskId);
                // 任务处理代码

            }
        }

        // 创建并提交子任务
        for (int i = 0; i < 10; i++) {
            Future<?> future = executor.submit(new SubTask(i));
            // 如果需要等待所有任务完成，可以使用future来同步
            executor.shutdown();
            // 如果需要等待直到线程池关闭
            executor.awaitTermination(10, TimeUnit.SECONDS);

        }
    }


}
